根據實際情況去選擇適合的部署用的伺服器是很重要的,以下是部署在不同環境的一些比較:
在比較之前想先分享垂直擴展和水平擴展的一些小觀念:
-
水平擴展 (Horizontal Scaling)
水平擴展是指透過增加更多的機器(伺服器)來分擔系統負載,達到擴展的目的。
優點:
- 對於單一主機故障比較不會導致整個系統崩潰,因為有多台主機可以幫忙分擔。
- 可以無限制地進行擴展,只要有足夠的資源。
缺點:
- 需要更複雜的網絡和資源管理。
- 應用程式可能需要進行特定的設計和配置,以確保能夠正常運作於分散式環境。
-
垂直擴展 (Vertical Scaling)
垂直擴展則是透過增加單一機器的資源(如 CPU、RAM 或儲存空間)來提高系統性能。這通常涉及到升級硬體規格或者加強單一伺服器的運算能力。
優點:
- 較為簡單,不需要改變應用程式架構或配置。
- 有助於提升單一系統的性能。
缺點:
- 會遇到硬體的物理限制,如某一點後,可能再也無法增加更多的 RAM 或 CPU。
- 成本上升迅速,因為高規格的硬體通常會帶來更高的價格。
- 垂直擴展會有可用性的風險,因為所有的資源都集中在一台機器上,一旦這台機器出現問題,會影響到整個系統。
1. 專用伺服器 (Dedicated Server)部署
部署到一台物理主機上。
優點:
- 資源獨占,無需與其他用戶共享。
- 硬體資源由自己管控,當流量不大,手邊又有設備的時候可以考慮。
缺點:
-
水平擴充較為昂貴及困難:涉及將工作負載分散到多台伺服器上。專用伺服器的水平擴充較為困難和昂貴,因為這通常需要購買和設置更多的硬體、配置負載均衡等。
-
垂直擴充有一定限制及昂貴:涉及增加單一伺服器的資源,例如增加RAM、CPU或存儲, 一直提升硬體設備除了昂貴也一定有他的限制。
2. 虛擬專用伺服器 (VPS)部署
VPS(虛擬專用伺服器)就是在一台物理主機(稱為宿主機)上使用虛擬化技術來運行多個虛擬主機。 然後我們部署到其中一台虛擬主機。
優點:
缺點:
- 資源仍然與其他虛擬機共享,可能受到所謂的「壞鄰居效應」的影響。也就是可能會被其他人吃掉記憶體及CPU。當某個虛擬主機工作量很大的時候可能會對其他虛擬著幾造成影響。
- 和專用主機一樣是水平擴展較為昂貴及困難, 而垂直擴充也是有一定的上限。
3. 雲端服務商 (Cloud Service Providers)部署
在雲端服務提供商所提供的平台,建立虛擬主機,在把專案部署到上面。
優點:
- 透過雲端的技術, 可以很彈性的使用各種配置(比如記憶體、硬碟空間、cpu)
- 可以很容易地擴展或縮小資源,比起專用主機,不用自己還要去安裝這些硬體設施
- 高可用性和故障轉移能力,發生故障通常都有一定的技術快速解決
缺點:
- 長期運行可能要看實際上是否成本較高,畢竟專用主機可能一開始的硬體設備買一買就可以用很久, 但雲端服務是需要持續付費。
- 可能較為複雜,需要對特定的雲平台有一定的了解。
種類
1. Amazon Web Services (AWS)
優點:
-
全面的服務範疇:提供了從計算、存儲到機器學習的全套服務。
-
全球性的資料中心:廣泛的地理位置選擇,可以靠近終端用戶提供服務。
-
成熟的安全性: 提供多層的安全控制。
缺點:
-
價格:某些服務的價格可能比其他提供商高。
-
複雜性:由於提供的服務範疇廣泛,有時可能需要深入學習才能完全利用其功能。
2. Microsoft Azure
-
優點:
-
集成性:Azure很好地集成了Microsoft的其他產品和服務,例如Office 365和Windows Server。
-
開發者友好:Azure提供了豐富的開發和管理工具,方便開發者使用。
-
缺點:
-
價格模型:與其他雲服務商相比,Azure的價格模型可能會較為複雜。
-
學習曲線:由於Azure的服務範疇廣泛,新用戶可能需要花更多的時間來學習如何使用。
3. Google Cloud Platform (GCP)
-
優點:
-
數據分析和機器學習:GCP在這方面非常強大,特別是BigQuery。
-
價格:通常比AWS和Azure便宜。
結語:
畢竟我是在做專案的練習,所以我選擇用雲端服務商的方式部署,想練習用SSH的設置及操作,還有去雲端服務商的一些服務,這裡我選擇的是用AWS,主要是因為他的市占率高,感覺以後工作可能也有機率碰到(目前覺得拉),所以當作練習的對象。